package com.applet.mallappletbackstage.service;

import com.applet.mallappletbackstage.entity.ReleaseWork;
import com.applet.mallappletbackstage.entity.User;
import com.applet.mallappletbackstage.entity.vo.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author ${author}
 * @since 2020-07-31
 */
public interface UserService extends IService<User> {

    /***
     * 通过id查询用户信息
     * @param id
     * @return
     */
    UserInfoVO userInfo(String id);

    /***
     * 通过用户id查询用户发布工作列表
     * @param id
     * @return
     */
    List<ReleaseWork> userReleaseWorkListById(String id);

    /***
     * 新增用户
     * @param addUserVO
     * @return
     */

    /***
     * 注册用户
     * @param openid
     * @param nickName
     * @param avatarUrl
     * @return
     */
    int register(String openid, String nickName, String avatarUrl);

    /***
     * 查询用户是否存在
     * @param openid
     * @return
     */
    User selectIsUser(String openid);

    /***
     * 用户登录
     * @param username
     * @param password
     * @return
     */
    boolean login(String username, String password);

    /***
     * 添加用户
     * @param username
     * @param password
     * @param nickname
     * @return
     */
    int addUser(String username, String password, String nickname, String phone, String code);

    /***
     * 完善个人信息
     * @param openid
     * @param uInfoVO
     * @return
     */
    int uInfo(String openid, UInfoVO uInfoVO);

    /***
     * 通过openid查询用户信息
     * @param openid
     * @return
     */
    UInfoVO info(String openid);

    /***
     * 通过openid查询用户信息
     * @param openid
     * @return
     */
    User getInfo(String openid);

    /***
     * 完善用户资料
     * @param openId
     * @param perfectInfoVO
     * @return
     */
    int perfectInfo(String openId, PerfectInfoVO perfectInfoVO);

    /***
     * 查询所有用户数据
     * @param openId
     * @return
     */
    User getAllUserInfo(String openId);

    /***
     * 获取个人信息
     * @param openId
     * @return
     */
    PersonalInfoVO getUserInfo(String openId);

    /**
     * 获取用户列表
     *
     * @param current
     * @return
     */
    Page<User> getUserList(Long current);

    /**
     * 拉黑用户
     *
     * @return
     */
    void deleteUser(String user);

    /**
     * 获取用户列表
     *
     * @param current
     * @return
     */
    Page<User> getUserListByDate(Long current, AdminSearch adminSearch);

    /***
     * 发送验证码
     * @param phone
     * @return
     */
    int sendCode(String phone);
}
